home *** CD-ROM | disk | FTP | other *** search
/ Hart's War Press Kit / Hart's War Press Kit.iso / pc / pcstubwqt.dir / 00005_Script_Rollover Cursor Change < prev    next >
Text File  |  2002-01-14  |  6KB  |  238 lines

  1. -- DESCRIPTION --
  2.  
  3. on getBehaviorDescription me
  4.   return \
  5.     "ROLLOVER CURSOR CHANGE" & RETURN & RETURN & \
  6.     "Changes the cursor when the mouse rolls over the current sprite. " & \
  7.     "Choose one of the pointers included with Director, or specify two 1-bit 16x16 pixel bitmap members: one to act as the pointer image, the other to define the transparent/opaque areas of the cursor." & RETURN & RETURN & \
  8.     "TIPS:" & RETURN & \
  9.     "Place a single pixel at the topRight and bottomLeft of the image itself to create what is in fact a 17x17 pixel bitmap. " & \
  10.     "These extra pixels will not appear in the cursor (they will be clipped) but the mask will align with them. " & \
  11.     "This ensures that the opaque area surrounds the cursor image correctly." & RETURN & RETURN & \
  12.     "Set the regPoint of the image to define the cursor's hotspot." & RETURN & RETURN & \
  13.     "PARAMETERS:" & RETURN & \
  14.     "* EITHER - Use one of Director's built-in cursors." & RETURN & RETURN & \
  15.     "* OR - Use your own bitmap images." & RETURN & \
  16.     "* Custom Image " & RETURN & \
  17.     "* Custom Mask" & RETURN & RETURN & \
  18.     "To use custom images, ensure that " & QUOTE & "1 bit bitmap" & QUOTE & " is selected as the type of cursor."
  19. end getBehaviorDescription
  20.  
  21.  
  22. on getBehaviorTooltip me
  23.   return \
  24.     "Use with graphic members." & RETURN & RETURN & \
  25.     "Modifies the cursor when the mouse rolls over a sprite." & RETURN & RETURN & \
  26.     "You can use built-in or custom images for the cursor."
  27. end getBehaviorTooltip
  28.  
  29.  
  30.  
  31. -- PROPERTIES --
  32.  
  33. property spriteNum
  34. -- author-defined parameters
  35. property myCursorType
  36. property myBuiltInCursor
  37. property myCursorMember
  38. property myCustomCursor
  39. property myCustomMask
  40. -- internal properties
  41. property mySprite
  42. property mySavedCursor
  43.  
  44.  
  45. -- EVENT HANDLERS --
  46.  
  47. on beginSprite me
  48.   SetSpriteCursor me
  49. end beginSprite
  50.  
  51.  
  52. on endSprite me
  53.   mySprite.cursor = mySavedCursor
  54. end endSprite
  55.  
  56.  
  57.  
  58. -- CUSTOM HANDLER --
  59.  
  60. on SetSpriteCursor me
  61.   
  62.   mySprite = sprite (me.spriteNum)
  63.   -- Save cursor to revert to
  64.   mySavedCursor = mySprite.cursor
  65.   
  66.   -- Set the cursor of the sprite
  67.   if voidP (myCursorType) then
  68.     mySprite.cursor = myBuiltInCursor
  69.     exit
  70.   end if
  71.   
  72.   case myCursorType of
  73.     "Built-in cursor":
  74.       mySprite.cursor = myBuiltInCursor
  75.     "Cursor Member":
  76.       myCursorMember = value (myCursorMember) 
  77.       cursorList = [myCursorMember.number]
  78.       mySprite.cursor = cursorList
  79.     "1 bit bitmap":
  80.       myCustomCursor = value (myCustomCursor) 
  81.       cursorList = [myCustomCursor.number]
  82.       if myCustomMask <> "no mask" then
  83.         myCustomMask = value (myCustomMask) 
  84.         cursorList.append(myCustomMask.number)
  85.       end if
  86.       mySprite.cursor = cursorList
  87.   end case
  88. end SetSpriteCursor
  89.  
  90.  
  91.  
  92. -- AUTHOR-DEFINED PARAMETERS --
  93.  
  94. on isOKToAttach (me, aSpriteType, aSpriteNum)
  95.   case aSpriteType of
  96.     #graphic:
  97.       return TRUE
  98.     #script:
  99.       return FALSE
  100.   end case
  101. end isOKToAttach
  102.  
  103. on getPropertyDescriptionList me
  104.   
  105.   if not the currentSpriteNum then exit
  106.   
  107.   propertyDescriptionList = [:]
  108.   cursorTypes = []
  109.   cursorMembersList = GetCursorMembers (me)
  110.   cursorBitmapsList = GetCursorBitmaps (me)
  111.   cursorMasksList = duplicate (cursorBitmapsList)
  112.   cursorMasksList.addAt (1, "no mask")
  113.   
  114.   cursorMembers = cursorMembersList.count()
  115.   bitmapCursors = cursorBitmapsList.count()
  116.   if cursorMembers then
  117.     cursorTypes.append ("Cursor Member")
  118.   end if
  119.   if bitmapCursors then
  120.     cursorTypes.append ("1 bit bitmap")
  121.   end if
  122.   if cursorTypes.count() then
  123.     cursorTypes.addAt (1, "Built-in cursor")
  124.     propertyDescriptionList.addProp \
  125. ( \
  126.  #myCursorType, \
  127.  [\
  128.   #comment: "CHOICE OF TYPE - Use which type of cursor?", \
  129.   #format:  #string, \
  130.   #range:    cursorTypes, \
  131.   #default:  cursorTypes[1]\
  132.  ] \
  133. )
  134.     
  135.     propertyDescriptionList.addProp \
  136. ( \
  137.  #myBuiltInCursor, \
  138.  [\
  139.   #comment: "CHOICE OF CURSOR   -               Built-in cursor:", \
  140.   #format:  #cursor, \
  141.   #default:  280\
  142.  ] \
  143. )
  144.   else
  145.     return \
  146. [ \
  147.  #myBuiltInCursor: \
  148.  [\
  149.   #comment: "Use which cursor?", \
  150.   #format:  #cursor, \
  151.   #default:  280\
  152.  ] \
  153. ]
  154.   end if
  155.   
  156.   if cursorMembers then
  157.     propertyDescriptionList.addProp \
  158. ( \
  159.   #myCursorMember, \
  160.  [\
  161.   #comment: "-             Cursor member:", \
  162.   #format:  #member, \
  163.   #range:    cursorMembersList, \
  164.   #default:  cursorMembersList[1] \
  165.  ] \
  166. )
  167.   end if
  168.   
  169.   if bitmapCursors then
  170.     propertyDescriptionList.addProp \
  171. ( \
  172.  #myCustomCursor, \
  173.  [ \
  174.   #comment: "-   1 bit bitmap (image)", \
  175.   #format:  #bitmap, \
  176.   #range:    cursorBitmapsList, \
  177.   #default:  cursorBitmapsList[1]\
  178.  ] \
  179. )
  180.     
  181.     propertyDescriptionList.addProp \
  182. ( \
  183.  #myCustomMask, \
  184.  [ \
  185.   #comment: "1 bit bitmap   (mask)", \
  186.   #format:  #bitmap, \
  187.   #range:    cursorMasksList, \
  188.   #default:  cursorMasksList[1]\
  189.  ] \
  190. )    
  191.   end if
  192.   
  193.   return propertyDescriptionList
  194. end
  195.  
  196.  
  197. on GetCursorMembers me
  198.   cursorMembersList = []
  199.   maxCastLib = the number of castLibs
  200.   repeat with theCastLib = 1 to maxCastLib
  201.     maxMember = the number of members of castLib theCastLib
  202.     repeat with memberNumber = 1 to maxMember
  203.       theMember = member(memberNumber, theCastLib)
  204.       if theMember.type = #cursor then
  205.         if theMember.name = EMPTY then
  206.           cursorMembersList.append(theMember)
  207.         else
  208.           cursorMembersList.append(theMember.name)
  209.         end if
  210.       end if
  211.     end repeat
  212.   end repeat
  213.   return cursorMembersList
  214. end GetCursorMembers
  215.  
  216.  
  217. on GetCursorBitmaps me
  218.   cursorBitmapsList = []
  219.   maxCastLib = the number of castLibs
  220.   repeat with theCastLib = 1 to maxCastLib
  221.     maxMember = the number of members of castLib theCastLib
  222.     repeat with memberNumber = 1 to maxMember
  223.       theMember = member(memberNumber, theCastLib)
  224.       if theMember.type = #bitmap then
  225.         if theMember.depth > 1 then next repeat
  226.         if theMember.width > 20 then next repeat
  227.         if theMember.height > 20 then next repeat
  228.         
  229.         if theMember.name = EMPTY then
  230.           cursorBitmapsList.append(theMember)
  231.         else
  232.           cursorBitmapsList.append(theMember.name)
  233.         end if
  234.       end if
  235.     end repeat
  236.   end repeat
  237.   return cursorBitmapsList
  238. end GetCursorMembers